package com.icinfo.cloud.provider.punish.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.icinfo.cloud.provider.common.enums.AssociatedTaskTypeEnum;
import lombok.Data;

import java.util.Date;
import java.util.List;
import java.util.Objects;

/**
 *
 * @author HKxxx
 * @date 2024/1/10 12:00
 */
@Data
public class AssociatedTaskVo {

    /**
     * 主键
     */
    private String id;
    /**
     * 枚举类型AssociatedTaskTypeEnum  CASE_SOURCE：案源;   CASE：案件;   CHECK_TASK：检查任务
     */
    private AssociatedTaskTypeEnum type;
    /**
     * 类型名称：CASE_SOURCE：案源名称;   CASE：案件名称;   CHECK_TASK：检查任务名称
     */
    private String name;
    /**
     * 类型名称：CASE_SOURCE：登记日期;   CASE：立案日期;   CHECK_TASK：检查日期
     */
    private String time;
    /**
     * 案件号
     */
    private String caseNumber;
    /**
     * 检查对象
     */
    private String checkObject;
    /**
     * 条线编码
     */
    private String lineCode;
    /**
     * 条线名称
     */
    private String lineName;

    /**
     * 任务关联时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    private Date relationTime;

    /**
     * 案由列表
     */
    private List<AssociatedTaskCaseReasonVo> caseReasonVoList;


    /**
     * 获取任务类型名称
     *
     * @return 任务类型名称
     */
    public String getTypeName() {
        if (Objects.isNull(type)) {
            return null;
        }
        return type.getDes();
    }

    public static AssociatedTaskVo convertForCheckTask(PunishTaskPageVO.PunishTaskVO task){
        AssociatedTaskVo vo = new AssociatedTaskVo();
        if (Objects.isNull(task)){
            return vo;
        }
        vo.setId(task.getTaskUid());
        vo.setType(AssociatedTaskTypeEnum.CHECK_TASK);
        vo.setName(task.getTaskName());
        vo.setTime(task.getCheckDate());
        vo.setCheckObject(task.getLegalEntityName());
        vo.setLineCode(task.getLineCode());
        vo.setLineName(task.getLineName());
        return vo;
    }

    /**
     * 初始化relationTime
     */
    public void initRelationTime() {
        if (Objects.nonNull(relationTime)) {
            return;
        }
        relationTime = new Date();
    }

}
